C语言中的循环之练习题-学习笔记-13

斐波那契数列

因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34…
即开始有一对儿兔子,然后3个月后兔子长大了,这对兔子会生一对儿兔子,之后的每个月这对儿兔子又生一对儿,假设兔子不会死亡,那么 N 个月后有多少对儿兔子。

理解

数列:1、1、2、3、5、8、13、21、34…
找到数列的规律之后,我们发现,3号数是1号+2号,6号数是4号+5号,即该数前两个数的和。

解题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
int main(){
int f1=1,f2=1,f3;
//将第1、2个月的数先赋值,作为计算基底
printf("%12d\t%12d\t",f1,f2);
//由于已经赋值了,所以就先输出
for(int i=3;i<41;i++){
f3=f1+f2;
printf("%12d\t",f3);
//利用循环输出第三个月的数,也就是前两个月的和
if(i%4==0){
printf("\n");
}
//判断换行
f1=f2;
f2=f3;
//将用于相加的两个数向前推移
}
}

运行结果

素数判断-1

输入一个大于3的数,并判断其是否为素数

思路

条件:大于3,素数
素数:不能被2~(n-1)中的任何一个整数整除

解题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
int main(){
int n,i;
printf("请随便输入一个数:\n");
scanf("%d",&n);
//获取输入的数字
for(i=2;i<=(n-1);i++){
if(n%i==0){
break;
}
}
//利用循环判断是否能被整除
if(i<n){
printf("输入的%d不是素数!\n",n);
}else{
printf("输入的%d是一个素数!\n",n);
}
//如果在循环的时候跳出,那么 i 一定是比 n 小的,所以就不是素数,反之则为素数
}

素数判断-2

在100~200中,输出所有的素数

思路

上面的题目是输入一个数,下面我们只需要将输入的数改成遍历100~200中的所有数即可。

解题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
int main(){
int n,i;
for(n=100;n<=200;n++){
//建立循环100~200的遍历循环
for(i=2;i<=(n-1);i++){
if(n%i==0){
break;
}
}
//利用循环判断是否能被整除
if(i<n){
continue;
//如果不是素数,则跳过该循环
}else{
printf("%d是一个素数!\n",n);
}
}
//如果在循环的时候跳出,那么 i 一定是比 n 小的,所以就不是素数,反之则为素数
return 0;
}

输出结果

尾巴

这是我的个人学习笔记,主要是应付考研复习使用,充斥着一些吐槽和个人观点,并不严谨,欢迎大家参考、指正。


-------------The End-------------
欢迎请我喝咖啡哦~!